既存の Amazon RDS for MySQL DB インスタンスで Performance Insights を有効化しても再起動するまで Performance Schema は有効にならない
コンバンハ、千葉(幸)です。
Amazon RDS では、Performance Insights というモニタリング機能があります。DB インスタンスやクラスターの単位で、その機能の有効化/無効化をコントロールできます。
そして、RDS for MySQL と MariaDB、Aurora MySQL では Performance Insights のオプションとして Performance Schema があります。Performance Insights とあわせて Perfomarnce Schema を用いることで、より詳細な情報が取得できます。
Performance Insights と Performance Shema の状態(有効/無効)は独立しています。そして、有効化/無効化の際に DB インスタンスの再起動を必要とするかどうかが異なります。
- Performance Insights:有効化/無効化の際に再起動を必要としない
- Performance Schema:有効化/無効化の際に再起動を必要とする
ここで、既存の DB インスタンスで Performance Insights を有効化しようとした際に以下のメッセージが表示されたことが気になりました。
Performance Insights を有効にすると、MySQL Community パフォーマンススキーマが自動的に有効になります。詳細はこちら
有効化に再起動を必要とする Performance Schema が「自動的に有効化される」ということは、この変更に伴い再起動が発生してしまうのか?というのが気になりました。
今回はその詳細を調べてみました。
先にまとめ
Performance Insights が無効の DB インスタンスで Performance Insights を有効化しても、再起動は伴わない。その後、再起動を行うまで Performance Schema は有効にならない。
Performance Insights と Performance Schemaの関係
改めて両者の関係を押さえておきましょう。イメージ図は以下です。
Performance Insights と Performance Schema がそれぞれ有効/無効であるかどうかは独立しています。ただし、デフォルトでは Performance Insights が Performance Schema を自動管理しており、その場合、Performance Insights の状態に合わせて Performance Schema を有効/無効にします。
Performance Insights が Performance Schema を自動管理している場合、取得できる情報がより詳細になります。Perfomance Insights の動作について、Performance Schema が自動管理下かどうかによる差分をまとめた表が以下です。
自動管理下である | 自動管理下でない | |
---|---|---|
収集する情報 | 詳細な低レベルのモニタリング情報を収集 | 待機イベントとSQLごとのメトリクスを収集 |
アクティブなセッションメトリクスの収集頻度 | 毎秒 | 5秒 |
ボトルネックの特定に…… | 使用できる | 使用できない |
Performance Schema 自動管理下になっているかどうかは、DB インスタンスに適用されているパラメータグループによって判別できます。以下の状態になっている場合、自動管理下にあります。
performance_schema
パラメータについて、以下の両方を満たしている- 値が
0
である source
がsystem
である
- 値が
なお、それぞれが有効/無効のいずれの状態であるかの確認手法は以下のとおりです。
- Performance Insights:マネジメントコンソールなどから確認可能
- Performance Schema :DB接続した上で、
SHOW VARIABLES
で確認
今回確認したかったこと
今回確認したかったことは以下です。
- Performance Insights および Performance Schema が無効状態の Amazon RDS for MySQL DB インスタンスがある
- Performance Insights が Performance Schema を自動管理している
- DB インスタンスの Performance Insights を有効化した場合、Performance Schema の状態はどうなるのか。そして再起動は発生するのか
この結果は、先ほど述べた通り「再起動は伴わず、再起動するまで Performance Schema は有効にならない」です。その検証の内容を以降記します。
既存の DB インスタンスのPerformance Insights を有効化してみた
1. 作業前の DB インスタンスの状態
Performance Insights が無効の状態である DB インスタンスを用意しました。
- db.m5.large
- MySQL 8.0.35
- シングルDBインスタンス構成
- DB インスタンスパラメータグループ:default.mysql8.0
適用されているパラメータグループのperformance_schema
の設定は以下のとおりであり、Performance Schema は Performance Insights の自動管理下にあります。
この DB インスタンスに接続し、Performance Shcema の状態を確認します。この DB インスタンスでは、Performance Schema が無効であることがわかります。
# (参考)クライアントのバージョンの確認 $ mysql --version mysql Ver 15.1 Distrib 10.5.20-MariaDB, for Linux (x86_64) using EditLine wrapper # DB インスタンス上の DB への接続 $ mysql -h ホスト名 -u ユーザー名 -p #対話式でパスワードを入力 (中略) # グローバル変数からPerformance Schema の状態の確認 MySQL [(none)]> SHOW GLOBAL VARIABLES LIKE 'performance_schema'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | performance_schema | OFF | +--------------------+-------+ 1 row in set (0.003 sec)
2. DB インスタンスで Performance Insights の有効化
マネジメントコンソールからDB インスタンスの変更を行います。変更内容の設定画面で「Performance Insights をオンにする」にチェックを入れます。
冒頭で記載したとおり、Performance Schema に関する記述が表示されています。
Performance Insights を有効にすると、MySQL Community パフォーマンススキーマが自動的に有効になります。詳細はこちら
変更の確認画面はこのような表示に。ここで再起動の有無を指定するようなことはできず、変更内容に応じて再起動の有無がコントロールされます。(Performance Insights の有効/無効化では再起動が発生しません。)
変更を実施すると、DB インスタンスのステータスがConfiguring-enhanced-monitoring
→変更中
→利用可能
と遷移しました。
DB インスタンスに記録されたイベントはこのような形に。再起動は発生していないことがわかります。(詳細モニタリングや DB パラメータグループに変更は発生していませんが、毎回イベントは記録されるようです。)
DB に再度接続して Performance Schema の状態を確認すると、引き続き無効化されています。
MySQL [(none)]> SHOW GLOBAL VARIABLES LIKE 'performance_schema'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | performance_schema | OFF | +--------------------+-------+ 1 row in set (0.003 sec)
3. DB インスタンスの再起動に伴う Performance Schema の有効化
DB インスタンスの再起動を実施します。
再起動の完了後、DB に接続して Performance Schema の状態を確認すると、有効化されていました。
MySQL [(none)]> SHOW GLOBAL VARIABLES LIKE 'performance_schema'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | performance_schema | ON | +--------------------+-------+ 1 row in set (0.004 sec)
「Performance Insights が無効の DB インスタンスで Performance Insights を有効化しても、再起動は伴わない。その後、再起動を行うまで Performance Schema は有効にならない。」ということが確認できました。
既存の DB インスタンスの Performance Insights を無効化すると?
せっかくなので、逆の操作を行った際の挙動を確認してみました。
先に結論を書いておくと、「Performance Insights が有効の DB インスタンスで Performance Insights を無効しても、再起動は伴わない。その後、再起動を行うまで Performance Schema は無効にならない。」です。
先ほどまで使用してきた DB インスタンスを再度変更し、Performance Insights を無効化します。
もちろん再起動は発生しません。
DB に接続して Performance Schema を確認すると、引き続き有効化されたままです。
MySQL [(none)]> SHOW GLOBAL VARIABLES LIKE 'performance_schema'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | performance_schema | ON | +--------------------+-------+ 1 row in set (0.003 sec)
再起動を実施しました。
再度 DB に接続して Performance Schema を確認すると、無効化されていました。
MySQL [(none)]> SHOW GLOBAL VARIABLES LIKE 'performance_schema'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | performance_schema | OFF | +--------------------+-------+ 1 row in set (0.003 sec)
おまけ:新規作成する DB インスタンスで Perfomance Insights を有効にすると?
DB インスタンスの作成時に Performance Insights を有効化すると、Performance Schema も有効化された状態になっていました。
MySQL [(none)]> SHOW GLOBAL VARIABLES LIKE 'performance_schema'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | performance_schema | ON | +--------------------+-------+ 1 row in set (0.002 sec)
終わりに
Performance Insights および Performance Schema が無効な状態である DB インスタンスで Performance Insights を有効化した際に再起動は発生するのか、を確認してみました。
ドキュメントでは以下記述があるため再起動は発生しないだろう、という想定はしていたのですが、実際に試してその通りの挙動であったため安心しました。
Performance Schema の再起動による影響
Performance Insights と Performance Schema は、DB インスタンスの再起動の要件が異なります。
- Performance Schema
この機能をオンまたはオフにするには、DB インスタンスを再起動する必要があります。
Performance Insights
この機能をオンまたはオフにするために、DB インスタンスを再起動する必要はありません。
Performance Schema が現在有効になっていない場合、DB インスタンスを再起動せずに Performance Insights を有効にすると、Performance Schema は有効になりません。
マネジメントコンソールで表示されるPerformance Insights を有効にすると、MySQL Community パフォーマンススキーマが自動的に有効になります。
という表記は、「ただし、再起動するまで適用されません」といった追記してくれるとより迷わなくて助かるなと思いました。(ので、フィードバックを送っておきました。)
同じようなことが気になった方の参考になれば幸いです。
以上、 チバユキ (@batchicchi) がお送りしました。
参考
- Amazon RDS for MariaDB または MySQL における Performance Insights の Performance Schema の有効化 - Amazon Relational Database Service
- Aurora MySQL における Performance Insights の Performance Schema の有効化 - Amazon Aurora
- Amazon RDS DB インスタンスを変更する - Amazon Relational Database Service
- RDS for MySQLでもPerformance Insightsで性能確認が可能になりました | DevelopersIO
- Amazon Aurora MySQL で Performance Schema の有効・無効による Performance Insights で表示される情報の違い | NHN テコラス Tech Blog | AWS、機械学習、IoTなどの技術ブログ